关于二分查找,想必大家都非常熟悉了,正如《编程珠矶》中提到的,这是一个简单的程序,可是要实现一个无bug的版本确并非一件易事,笔者最近看了一下二分搜索,简短得概括一下。
对于不同的需求,我们面临的二分查找就会有不同的版本,就我最近遇到的几个版本好好解释一下:
- 给定一个数组,二分查找该数组中是否存在某元素elem,如果存在返回该元素的下标,如果不存在返回-1。
这是最常见的版本,代码也不是很难。最常见的代码如下:
在数组A[ left, right ]中寻找元素 m。
int binarySearch(int A[], int left, int right, int target)
{
int mid;
if(left > right)
{
cout << "find range error!" << endl;
return -1;
}
while(left <= right) //注意此处的数据范围的空间是[ left